/**
*Require: Fields for field declaration hierarchy, B for not-covered branches
*Ensure: OCP
*/
if Length(Fields) == 1 then
	OCP = CreateOCP(TypeOf(Fields}[0]),B)
	return OCP
else
	Set current = NULL
	for i = 1 to Length(Fields)-1 do}
		current = Fields[i]
		dc = TypeOf(Fields[i-1]
		assg = IsAssignable(current,dc)
		if !assg then
			OCP = CreateOCP(dc,B)
			return OCP
		end if
	end for
	OCP = CreateOCP(TypeOf(current),B)
	return OCP
end if